#ifndef __SCENEGRAPH_H__
#define __SCENEGRAPH_H__

#include "Mesh.h"
#include "Shader.h"
#include "Camera.h"
#include "Object.h"
#include <vector>
#include <boost/smart_ptr/shared_ptr.hpp>


class CSceneGraph
{
public:

	CSceneGraph();
	~CSceneGraph();

	// for_each(m_lstObervers.begin(), m_lstObervers.end(), std::mem_fun(&CObserver::update));
	
	void render();

	void addMesh(MeshPtr pMesh);
	void addShader(ShaderPtr pShader);
	void addCamera(CameraPtr pCamera);
	void addObject(ObjectPtr pObject);

private:
	std::vector<MeshPtr>	m_vecMeshes;
	std::vector<ShaderPtr>	m_vecShaders;
	std::vector<CameraPtr>	m_vecCameras;
	std::vector<ObjectPtr>	m_vecObjects;
};
typedef boost::shared_ptr<CSceneGraph> SceneGraphPtr;

#endif // __SCENEGRAPH_H__
